<?php
/**
 * 
 * @author Natanael
 * controlador de apellido RM
 * 
 */
class RegistroNombre extends Controller{ 

       public function __construct()
       {
		    parent::Controller();
		    $this->load->database();
		    $this->load->model(array('MregistroNombre','Mapellido','Mrnestatus','usuarios','Mactividad','Hregistronombre','Mcompaniacarpetas','Mrnidioma','usuarios'));
       }
	    
	   public function index()
	   {
	      $this->load->view('main', array('content_page' => 'registronombre_list','menutop' => 0));	      	      	
	   }
	   
       public function admin()
	   {
	      $this->load->view('main', array('content_page' => 'registronombre_admin','menutop' => 0));	      	      	
	   }
	   
	   public function idiomaMensages() 
	   {
	   	  
	   	 $engles = 0;
	   	 $espanol = 0;
	   	  
	   	  for($i = 1; $i <= 2; $i++)
	   	  {
	            
	   	  	  $where = array(
	   	                     'Id_Estatus'    =>$i,
	   	                    );
	   	                    
	   	      $whereList = array(
	   	                        'IdStatus'    =>$i,
	   	                        );              
              
	   	      $array = $this->MregistroNombre->loadRegistroNombreByWhere($where);
	   	      
	   	      $arrayList = $this->Mcompaniacarpetas->loadRegistroNombreByWhere($whereList);
	   	      
	   	      if ($array != false) {
	   	     
                  foreach($array as $k){
              	       if ($k->getIdIdioma() == 2) {
              	   	      $engles++;  
              	       }else{ 
              	          $espanol++;
              	      }
                 }
	   	      } 

	   	      if ($arrayList != false) {
	   	     
                  foreach($arrayList as $k){
              	       if ($k->getIdIdioma() == 2) {
              	   	      $engles++;  
              	       }else{ 
              	          $espanol++;
              	      }
                 }
	   	      }  
	   	      
	   	  } 
	   	 
	   	  $total = $engles + $espanol;
	   	  $por2   =  $engles/$total;
	   	  $porEn  =  $por2 * 100;
	   	  $porEn  = intval($porEn);
	   	  
	   	  $porEs  = $espanol/$total;
	   	  $porEs  = $porEs * 100;
	   	  $porEs  = intval($porEs);
	   	 
	   	  
	     if($porEn == 50){
	   	     return "Hay la misma cantidad de nombres en espa&ntilde;ol y en ingles";
	   	  }else if($porEn > 50){
	   	     return "Es recomendable crear nombre en espa&ntilde;ol, solo hay un ".substr($porEs, 0, 5)."%";
	   	  }else{
	   	     return "Es recomendable crear nombre en ingles, solo hay un ".substr($porEn, 0, 5)."%";
	   	  }
	   	
	   	  
	   }
	   
	   public function sevicioMensages() 
	   {
	   	
	   	    @$actividad = $this->Mactividad->loadActividad();
	   	    @$arrayActividad = array();
	   	    @$grupo   = array();
	   	    
	   	    $registro = $this->MregistroNombre->cantidadRegistro(array('Id_Estatus' => 1));
	   	    $registro += $this->MregistroNombre->cantidadRegistro(array('Id_Estatus' => 2));
	   	    $registro += $this->Mcompaniacarpetas->cantidadRegistro(array('IdStatus' => 1));
	   	    $registro += $this->Mcompaniacarpetas->cantidadRegistro(array('IdStatus' => 2));
	   	    
	   	    $grupo[0] = array();
	   	    $grupo[1] = array();
	   	    $grupo[2] = array();
	   	    
	   	    foreach(@$actividad as $k){
	   	    	$arrayActividad[$k->getIdActividad()] = 0;
	   	    	$apellido = $this->Mapellido->loadApellidoByActividad($k->getIdActividad());
	   	    	
	   	    	foreach(@$apellido as $j){
	   	    	    $arrayActividad[$k->getIdActividad()] += $this->countApellido($j->getIdApellido());
	   	    	}
              $por = $arrayActividad[$k->getIdActividad()] / $registro; 
              $por = $por * 100;
	   	    	
             if ($arrayActividad[$k->getIdActividad()] == 0) {
             	$grupo[0][] = $k->getDescripcionActividad();
             }else{
             	if ($por >= $k->getParticipacion()) {
             		$grupo[2][] = $k->getDescripcionActividad();
             	}else{
             	    $grupo[3][] = $k->getDescripcionActividad();
             	} 
                
             } 
	   	    	
	   	    }
	   	    
	   	    return $grupo;
	   }
	   
	   public function countApellido($id) 
	   {
	   	   	$countApellido = 0;
	   	    
	   	   	for ($index = 1; $index <= 2 ; $index++) {
	   	   		
	   	   		  $where = array(
	   	                        'Id_Estatus'    => $index,
	   	   		                'Id_Apellido'   => $id
	   	                        );

                          
	   	           $whereList = array(
	   	                            'IdStatus'    => $index,
	   	                            'IdApellido'  => $id
	   	                            ); 
	   	                            
	   	         $array = $this->MregistroNombre->loadRegistroNombreByWhere($where);
	   	         if ($array != "") 
	   	              $countApellido += count($array); 
	   	          
	   	            
	   	         $arrayList = $this->Mcompaniacarpetas->loadRegistroNombreByWhere($whereList); 
	   	         if ($arrayList != "") 
	   	              $countApellido += count($arrayList); 
	   	           
	   	   	}
	   	   	
	   	   	return $countApellido;
	   }
	   
       public function add()
	   {   
	   	   
	   	   $apellido = $this->Mapellido->loadApellido();
	   	   $idioma = $this->Mrnidioma->loadIdioma();
	   	   
	       $this->load->view('main', array('content_page'        => 'registronombre_add',
	                                       'menutop'             => 0,
	                                       'apellido'            =>$apellido,
	                                       'idioma'              =>$idioma,
	                                       'mensageIdioma'       =>$this->idiomaMensages(),
	                                       'actividades'         =>$this->sevicioMensages()
	                                       )
	                          );
	   }
	   
	   public function addadmin() 
	   {
           $apellido = $this->Mapellido->loadApellido();
	   	   $idioma = $this->Mrnidioma->loadIdioma();
	   	   $usuario = $this->usuarios->LoadUsuarios();
	   	   
	       $this->load->view('main', array('content_page'        => 'registronombre_add2',
	                                       'menutop'             => 0,
	                                       'apellido'            => $apellido,
	                                       'idioma'              => $idioma,
	                                       'mensageIdioma'       => $this->idiomaMensages(),
	                                       'actividades'         => $this->sevicioMensages(),
	                                       'usuario'             => $usuario
	                                       )
	                          );
	       
	   }
	   
	   public function estatus($id) 
	   {
	   	   $estatus = $this->Mrnestatus->loadEstatus();	   	   
	       $this->load->view('main', array('content_page' => 'registronombre_estatus','menutop' => 0,'estatus'=>$estatus,'id'=>$id));
	   }
	   
	   public function saveEstatus(){
	   	
	   	    if($this->input->post('estatus') != false && $this->input->post('id') != false){
	   	    	$estatus = $this->input->post('estatus');
	   	    	$estatus = intval($estatus);
	   	    	$id = $this->input->post('id');
	   	    	$id = intval($id);
	   	    	
	   	    	$objeto = $this->MregistroNombre->LoadRegistroNombreById($id);
	            $apellido = $this->Mapellido->LoadApellidoById($objeto->getIdApellido());
	            $categoria = $this->Mactividad->LoadActividadById($apellido->getIdActividad());
	   	    	 	    	
	             switch($estatus)
	             {
	             	case 2:
                        
	             		$data = array('Id_Estatus'=>$estatus);  
	             		$this->MregistroNombre->edit($data, $id);
	             		
	                break;

	             	case 4:
	
	             		$data = array(
	             		              'Descripcion'      => $objeto->getDescripcion(),
	             		              'Id_Apellido'      => $objeto->getIdApellido(),
	             		              'Categoria'        => $categoria->getDescripcionActividad(),
	             		              'FechaHistorico'   => date("Y-m-d H:i:s"),
	             		              'Id_Usuario'       => $objeto->getIdUsuario(),
	             		              'FechaInicio'      => $objeto->getFechaSystem(),
	             		              'Id_Estatus'       => 4
	             		             ); 
	             		
	             		if ($this->Hregistronombre->crear($data) == true) {
	             		     $this->MregistroNombre->delete($id);
	             		}             
	             			             
	             	break;

	             	case 5:
	             		
	             	   $data = array('Id_Estatus'=>$estatus);  
	             		$this->MregistroNombre->edit($data, $id);  

	             	break;

	             	case 6:
	             		
	             		$dataList = array(
	             		                  'Referencia'       => $objeto->getDescripcion(),
	             		                  'IdStatus'         => 2,
	             		                  'IdUsuario'        => $objeto->getIdUsuario(),
	                                      'type'             => 1,
	             		                  'IdApellido'       => $objeto->getIdApellido(),
	             		                  'FechaInicio'      => date("Y-m-d H:i:s"),
	             		                  'Id_Idioma'        => $objeto->getIdIdioma()
	             		                 );
	             		       
	             		$data = array(
	             		              'Descripcion'      => $objeto->getDescripcion(),
	             		              'Id_Apellido'      => $objeto->getIdApellido(),
	             		              'Categoria'        => $categoria->getDescripcionActividad(),
	             		              'FechaHistorico'   => date("Y-m-d H:i:s"),
	             		              'Id_Usuario'       => $objeto->getIdUsuario(),
	             		              'FechaInicio'      => $objeto->getFechaSystem(),
	             		              'Id_Estatus'       => 6
	             		             );               
	             		                 
	             		 if ($this->Mcompaniacarpetas->add($dataList)) {
	             		 	  if ($this->Hregistronombre->crear($data) == true) {
	             		 	  	$this->MregistroNombre->delete($id);
	             		 	  }
	             		 }                 

	             	break;	
	             	
	             }
	             
	             redirect('registronombre/admin');	
	   	    	
	   	    }
	   	
	   }
	   
       public function edit($id)
	   {
	   	   $objetos = $this->MregistroNombre->LoadRegistroNombreById($id);
	   	   $apellido = $this->Mapellido->loadApellido();
	   	   $idioma = $this->Mrnidioma->loadIdioma();
	       $this->load->view('main', array('content_page' => 'registronombre_edit','menutop' => 0,'apellido'=>$apellido,'objetos'=>$objetos, 'idioma'=>$idioma));
	   }
	   
       public function editAdmin($id)
	   {
	   	   $objetos = $this->MregistroNombre->LoadRegistroNombreById($id);
	   	   $apellido = $this->Mapellido->loadApellido();
	   	   $idioma = $this->Mrnidioma->loadIdioma();
	       $this->load->view('main', array('content_page' => 'registronombre_edit','menutop' => 0,'apellido'=>$apellido,'objetos'=>$objetos, 'idioma'=>$idioma));
	   }
	   
	   
	   public function delete()
	   {
	      $ids = $this->input->post('delete_rows');
	   
	      if ($this->MregistroNombre->delete($ids) === true) {
	   	   
	      }else{
	         
	      } 
	   
	   }
	   
	   public function data($usuario = false)
	   {
	   	
    	     $page = $this->input->post('page') ? $this->input->post('page') : 1; // Pagina Actual o 1 por default
		     $sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'Id_RegistroNombre'; // Columna para el order by
		     $sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'desc'; // Orden (asc|desc)
		     $limit = $this->input->post('rows') ? $this->input->post('rows') : 30;
		     $start = $limit * $page - $limit;
		     if($start < 0) $start = 0;
  
		      header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
		      header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
		      header("Cache-Control: no-cache, must-revalidate" );
		      header("Pragma: no-cache" );
		      
		    $user = false;  

		    if ($usuario != false && $usuario == 'true') {
		    	 $user = $this->session->userdata('LOGGED_USR_ID');
		    }else if(intval($usuario) > 0){
		          $user = intval($usuario);
		    }  
		      
		     $records = $this->MregistroNombre->loadRegistroNombre($user,$start, $limit, $sortname, $sortorder);

		     $totalRecords = count($records);

		     $totalPages = ceil($totalRecords/$limit);
		     if ($page > $totalPages) $page = $totalPages;

		        $json_output = array(
		            'page'		=> $page,
		            'total'		=> $totalPages,
		            'records'	=> $totalRecords,
		            'rows'		=> array()
		        );

		       if($records != false) 
		       {
			     foreach($records as $objetos){
			     	
			     	$apellido  = $this->Mapellido->LoadApellidoById($objetos->getIdApellido());
			     	$actividad = $this->Mactividad->LoadActividadById($apellido->getIdActividad());
			     	$estatus   = $this->Mrnestatus->LoadEstatusById($objetos->getIdEstatus());
			     	$usuario   = $this->usuarios->LoadUsuarioById($objetos->getIdUsuario());
			     	
				     $arr = $json_output['rows'][] = array(
				          'IdRegistroNombre'          => $objetos->getIdRegistroNombre(),
				          'Descripcion'               => $objetos->getDescripcion(),
				          'IdApellido'                => $apellido->getDescripcionApellido(),
				          'IdActividad'               => $actividad->getDescripcionActividad(),
				          'IdEstatus'                 => $estatus->getDescripcionEstatus(),
				          'FechaSystem'               => $objetos->getFechaSystem(),
				          'IdUsuario'                 => $usuario->getUsernameUsuario()
				      );
			      }
		        }

		 echo json_encode($json_output);
		
	   }
	   
	   
	   /**
	    * 
	    * Enter description here ...
	    * @param string $usuario
	    */
	   public function generarExcel($usuario = false)
	   {

	   	
	   	     $body = "";
	   	     
	   	     $descripcion = "";
	   	     $apellidos = "";
	   	     $estatu = "";
	   	     $fecha = "";
	   	     $usaurio = "";
	   	     
	   	     $page = $this->input->post('page') ? $this->input->post('page') : 1; 
	   	     $sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'Id_RegistroNombre'; // Columna para el order by
		     $sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'desc'; // Orden (asc|desc)
		     $limit = $this->input->post('rows') ? $this->input->post('rows') : 200;
		     $start = $limit * $page - $limit;
		     if($start < 0) $start = 0;
	   	    
	   		 $user = false;  

		     if ($usuario != false && $usuario == 'true') {
		    	  $user = $this->session->userdata('LOGGED_USR_ID');
		     }else if(intval($usuario) > 0){
		          $user = intval($usuario);
		     }  
		      
		     $records = $this->MregistroNombre->loadRegistroNombre($usuario, $start, $limit, $sortname, $sortorder);
		    
	         foreach($records as $objetos){
			     	
	         	
			     	$apellido  = $this->Mapellido->LoadApellidoById($objetos->getIdApellido());
			     	$actividad = $this->Mactividad->LoadActividadById($apellido->getIdActividad());
			     	$estatus   = $this->Mrnestatus->LoadEstatusById($objetos->getIdEstatus());
			     	$usuario   = $this->usuarios->LoadUsuarioById($objetos->getIdUsuario());
			     	
		            $descripcion .= $objetos->getDescripcion()."<br>";
		            $apellidos   .= $apellido->getDescripcionApellido()."<br>";
		            $estatu      .= $estatus->getDescripcionEstatus()."<br>";
		            $fecha       .= $objetos->getFechaSystem()."<br>";
		            $usaurio     .= $usuario->getUsernameUsuario()."<br>";
		            
		            
		
			 }
			 
			$body = "<table>
		
					<tr>					
						<th>Descripcion</th>
						<th>Apellido</th>
						<th>Estatus</th>
						<th>Fecha</th>
						<th>Usuario</th>
					</tr>
					
					<tr>
					   
						<td>$descripcion</td>
						<td>$apellidos</td>
						<td>$estatu</td>
						<td>$fecha</td>
						<td>$usaurio</td>
					</tr>
		</table>";
		
		
		$filename = "reportes-nombres.xls";
		
	    $open = fopen($filename,"a") or die("Hubo un error");
        fputs($open,$body);
        fclose($open);
       
		header('Content-type: application/vnd.ms-excel');
		header("Content-Disposition: attachment; filename=reportes-nombres.xls");
		header("Pragma: no-cache");
		header("Expires: 0");

		echo $body;
			     
	   }
	   
       public function save()
	   {	      
	   	           if ($this->input->post('usuario') > 0) {
	   	           	   $usuario = $this->input->post('usuario');
	   	           }else{
	   	           	   $usuario = $this->session->userdata('LOGGED_USR_ID');
	   	           }
	   	           
	               $data = array(
			                 'Descripcion'           => strtoupper($this->input->post('description')),
			                 'Id_Apellido'           => intval($this->input->post('apellido')),
	                         'Id_Estatus'            => 1,
	                         'Fecha_System'          => date('Y-m-d H:i:s'),
	                         'Fecha_Real'            => date('Y-m-d H:i:s'),
	                         'Id_Usuario'            => $usuario,
	                         'Id_Idioma'             => intval($this->input->post('idioma'))
			        );
		
		          if ($this->input->post('idApellido') == false){
				 
			            if ($this->MregistroNombre->crear($data) == true){
			                 $this->session->set_flashdata('error_title', 'Se a Creado el Registroo');
			            }else{
			 	             $this->session->set_flashdata('error_title', 'Huvo un error');
			            } 
			
		           }else{
		           	     
		           	       $data = array(
			                 'Descripcion'           => strtoupper($this->input->post('description')),
			                 'Id_Apellido'           => intval($this->input->post('apellido')),
	                         'Id_Estatus'            => 1,
	                         'Fecha_Real'            => date('Y-m-d H:i:s'),
	                         'Id_Idioma'             => intval($this->input->post('idioma'))
			        );
		           	
			              if ($this->MregistroNombre->edit($data,$this->input->post('idApellido')) == true){
			                  $this->session->set_flashdata('error_title', 'Se Edit la Apellido');
			              }else{
			 	              $this->session->set_flashdata('error_title', 'Huvo un error');
			              }        
			       }
		redirect('registronombre');	
	 }
	    
  
}